
    use: 'ie.ondevice.objectkit.utility.compiler.Loader';
    use: 'ie.ondevice.objectkit.utility.compiler.ClassPath';
    use: 'ie.ondevice.objectkit.utility.compiler.ClassFile';
        
    ClassLoader.inherit(Loader).implement
    (
        {
            /**
             * Resolve a class file by a classes canonical name and load its
             * corresponding class file.
             * 
             * @param {String} canonicalName    The class name to load
             * @return {ClassFile}              The classes file
             * @throws {ClassLoaderError}       If the class file cannot be loaded
             * @override
             */
            load: function (canonicalName) 
            {
                var path= this.classpath.resolve(canonicalName)
                ,   sourceCode
                
                try 
                {
                    sourceCode= this.parent.load(path)
                }
                catch (thrown) 
                {
                    throw new Error ('Could not load class ' + canonicalName + '. ' + thrown.stack || thrown);
                }

                return new ClassFile (canonicalName, path, sourceCode);
            }
            
            /**
             * Set the classpath that the class loader will use to resolve
             * dependencies against.
             * @param {String} value
             */
        ,   setClasspath: function (value) 
            {
                this.classpath= new ClassPath(value);
            }
            
            /**
             * Get the classpath that the class loader is using to resolve
             * dependencies against.
             * @return {String}
             */
        ,   getClasspath: function () 
            {
                return String(this.classpath);
            }
        }
    );

    /**
     * Create a new class loader. The default classpath used is /Asset/Library.
     * TODO support multiple classpaths.
     * @param {Classpath} classpath
     * @constructor
     * @extends {Loader}
     */
    function ClassLoader () 
    {
        this.setClasspath('/Asset/Library');
    };
